
const Citizen = require('../models/Citizen.js');
const IdCard = require('../models/IdCard.js');

// 维护从 Citizen 到 IdCard 的一对一关联关系
Citizen.hasOne( IdCard , {
    // 指定对方(IdCard)表中参照我方(Citizen)主键的外键
    foreignKey: 'citizen_id',
    onDelete: 'SET NULL',
    onUpdate: 'CASCADE'
});

IdCard.belongsTo( Citizen , {
    // 指示我方(IdCard)用来维护关联关系的外键
    foreignKey: 'citizen_id' 
});

const person = { name: '张三丰' };
const idcard = { cardNo: '100200200211221234' };

// 先保存 Citizen 才会产生 Citizen 对应的主键
Citizen.create( person ).then( ct => {
    console.log( ct );
    return ct.dataValues ;
}).then( ct => {
    // 再将由数据库产生的 Citizen 的主键作为外键保存到 IdCard 对应的表中
    // 将 citizen 的 id 赋值到 idcard 的 citizenId 属性
    idcard.citizenId = ct.id ;
    console.log( idcard );
    // 注意 IdCard.create 返回一个 Promise 对象
    return IdCard.create( idcard );
}).then( c => {
    console.log( c );
});